if(!*T){} 是什么意思? (注:T时空指针) (C语言)

来源:百度知道 编辑:UC知道 时间:2024/07/05 06:07:56
还有 *T=(BiTree)malloc(sizeof(BiTNode)); (BiTree)是强制转换么?

谢谢~

*T=(BiTree)malloc(sizeof(BiTNode));
是的,这个是强制类型转换,是告诉编译系统,你知道这样赋值的后果,要编译器不要对这里报错。

一般如果你的T是这样定义的,上面一句才不会出错
BiTree **T;

if(!*T){程序体}
这句意思是如果T所指向的内存单元为零,则进入程序体。
也可以这样理解:如果T指向的元素不存在,则进入。
可以改用这样的方式
if(!T[0]){}
或者
if(T[0]==0){}

if(!*T){}先将*T转换成bool值,非0为true,0为false;然后取反。

*T=(BiTree)malloc(sizeof(BiTNode)); 这种用法没见过,个人觉得这样更好理解一些:
T = (BiTNode*)malloc(sizeof(BiTNode));
因为malloc返回的是BiTNode指针。
这里的(BiTree)是强制类型转换。。

(BiTree)是强制转换

标准C语言中,malloc()函数无需强制转换,使用强制转换只是个人的编程风格问题。

if(!*T) 指指针T的内容不为0
如果T是NULL的话一般会出错的
malloc返回的是指针,是强制转换成BiTree类型指针
typedef struct BiTNode * BiTree;